﻿
#pragma once
#include <stdio.h>
#include <string>
#include <set>
#include <map>
#include <any>
#include <array>
#include <vector>
#include <stdint.h>
#include <memory>
#include <functional>
#include <cstring>
#include <cmath>
#include <cstdarg>
#include <unordered_map>

// 以下用于控制导出的符号，因为默认全部导出，可能解决符号冲突
// __visibility__("default") 用于显式标记需要导出的符号，
// 使其在共享库中对外可见并可被外部程序使用。

#ifndef EXPORT_FLAG
#ifdef _MSC_VER
#	define EXPORT_FLAG __declspec(dllexport)
#else
#	define EXPORT_FLAG __attribute__((__visibility__("default")))
#endif
#endif

//这段代码主要是为了在跨平台项目中统一处理函数的调用约定。
//在使用 Visual Studio 编译器时，函数会使用 _cdecl 调用约定，
//而在其他编译器下则保持默认调用方式。
//如果你需要在不同平台上编译同一个项目，
//这样的宏定义可以确保调用约定的一致性。

#ifndef PORTER_FLAG
#ifdef _MSC_VER
#	define PORTER_FLAG _cdecl	
#else
#	define PORTER_FLAG 			
#endif
#endif

struct code_t;

//日内时间（精度到毫秒）
typedef uint32_t daytm_t;


typedef uint64_t estid_t;

constexpr estid_t INVALID_ESTID = 0x0LLU;

#define EXCHANGE_ID_SHFE	"SHFE"	//上期所
#define EXCHANGE_ID_DCE		"DCE"	//大商所
#define EXCHANGE_ID_INE		"INE"	//能源中心
#define EXCHANGE_ID_ZCE		"ZCE"	//郑商所
#define EXCHANGE_ID_SGE		"SGE"	//广期所
#define EXCHANGE_ID_CFFEX	"CFFEX"	//中金所


struct tick_info;

struct position_info;

struct today_market_info;

enum class order_flag;

enum class offset_type;

enum class direction_type;

enum class event_type;

enum class error_type;

